#include <vector>
#include <map>
#include "Symbol.h"


using namespace std; 
////#define symbolPath "symbols.def"
//#define symbolPath "symbolsForTest.def"
//
////use macro to construct enum SYMBOL and string SYMBOL at the same time
//enum SYMBOL{
//#define X(a) a,
//#include symbolPath
//#undef X
//	SYMBOL_COUNT
//};
//
//char const* const SYMBOL_str[] = {
//#define X(a) #a,
//#include symbolPath
//#undef X
//    0
//};

class ParseTreeNode{
public:
	SYMBOL content;
	vector<ParseTreeNode*> children;
	int depth;
};


class Production{
public:
	SYMBOL lhs;
	vector<SYMBOL> rhs;
	//ifstream program;	

	Production::Production(SYMBOL leftHandSide, vector<SYMBOL> rightHandSide);
	Production::Production();
	Production::Production(string filePath);
}; 

